const express = require("express");
const router = express.Router();
const path = require("path");
const fs = require("fs");

//创建目录
function mkDirectory(path){
  return new Promise(function(resolve, reject){
    fs.mkdir(path, function(err){
      if(err) {
        reject(err);
      }
      resolve();
    })
  })
}

//读取目录下的图片，默认该目录下没有目录了
function readDirectory(path){
  return new Promise(function(resolve, reject){
    fs.readdir(path, function(err, files){
      if(err){
        reject(err);
      }
      resolve(files);
    })
  })
}

//删除一个文件
function unlinkFile(path){
  return new Promise(function(resolve, reject){
    fs.unlink(path, function(err){
      if(err){
        resolve(false);
      }else{
        resolve();
      }
    })
  })
}
//删除一组文件
function unlinkList(arr){
  let proList = [];
  for( let i = 0; i < arr.length; i++ ){
    proList.push(unlinkFile(arr[i]));
  }
  Promise.all(proList).then(function(results){
    for(let i = 0; i < results.length; i++){
      if(!results[i]){
        return false;
      }
    }
    return true;
  })
}

//删除空文件夹
function rmEmptyDir(path){
  return Promise(function(resolve, reject){
    fs.rmdir(path, function(err){
      if(err){
        reject(err);
      }
      resolve(true);
    })
  })
}

router.post("/create", function(req, res){
  // console.log(req.body.name);
  let name = req.body.name;
  let namePath = path.join('./public/images/', name);
  mkDirectory(namePath).then(function(r){
    res.send({status: 0});
  }).catch(function(error){
    res.send({status: -1});
  })

  // res.send();
})

router.get('/list', function(req, res){
  let imgpath = './public/images';
  readDirectory(imgpath).then(function(r){
    res.send({status: 0, list: r});
  }).catch(function(error){
    res.send({status: -1});
  })

})



router.post('/delete', function(req, res){
  let name = req.body.name;
  let namePath = path.join('./public/images/', name);
  console.log("开始删除文件夹" + namePath);
  /*readDirectory(namePath).then(function(files){
    // console.log('files', files)
    // console.log(files)
    // console.log(files.length == 0 , unlinkList(files), files.length == 0 || unlinkList(files));
    // if(files.length == 0 || unlinkList(files)){
    //   rmEmptyDir(namePath).then(function(r){
    //     if(r){
    //       res.send({status: 0})
    //     }else{
    //       res.send({status: -1})
    //     }
    //   }).catch(function(){
    //
    //   })
    // }

    if(files.length === 0){
      console.log(namePath+'是空文件夹')
      fs.rmdir(namePath, function(err){
        if(err){
          console.log('删除失败');
          res.send({status: -1})
        }
        console.log('删除成功')
        res.send({status: 0})
      })
    }else if(unlinkList(files)){
      fs.rmdir(namePath, function(err){
        if(err){
          console.log('删除失败');
          res.send({status: -1})
        }
        console.log('删除成功')
        res.send({status: 0})
      })
    }else{
      res.send({status: -1})
    }
  }).catch(function(){

  })*/


  fs.access(namePath, function(err){
    if(err){
      res.send({status: -1});
    }
    console.log(namePath + "文件夹可用");
    fs.readdir(namePath, function(err, files){
      if(err){
        res.send({status: -1});
      }
      console.log("读取文件夹内容");
      if(files.length == 0){
        console.log("文件夹为空");
        fs.rmdir(namePath, function(err){
          if(err){
            res.send({status: -1});
          }
          console.log("成功删除空文件夹" + namePath);
          res.send({status: 0});
        })
      }else {
        console.log("遍历文件夹中文件，当前假定此文件夹中不会存在文件夹");
        files.forEach(function(file, i){
          fs.unlink(namePath + '/' + file, function(err){
            if(err){
              res.send({status: -1});
            }
            console.log("删除文件" + file);
            if(i == files.length - 1){
              //res.send({status: 0});
              console.log("成功删除所有文件，接着删除文件夹");
              fs.rmdir(namePath, function(err){
                if(err){
                  console.log('删除失败')
                  res.send({status: -1});
                }
                console.log("成功删除文件夹");
                res.send({status: 0});
              })
            }
          })
        })

      }
    })
  })
})

module.exports = router;
